Google Cast: Credentials
Guide:
Android TV では Android app receiver が存在すると、cast 接続した際に自動的に Android app receiver と接続される。Android app receiver が普通の Android TV 版 app だった場合、sender と receiver でログインしているアカウントが異なる時に不都合が起こる可能性がある。それぞれでログインしているアカウントが同じかどうかで Android app receiver を開くか Web receiver を開くかを制御する、といったような分岐をさせたい場合は、Android app receiver で credentials と launch request checker を使うことで実現できる
Sender
CastContext の shared instance に CredentialsData をセットすると、cast 接続する際に receiver に送信される
CredentialsData
Android でじっそうするばあい
code:kotlin
castContext.setLaunchCredentialsData(
CredentialsData.Builder()
.setCredentials(credentials)
.build()
)
Receiver
Android app receiver にてCastReceiverOptions に launch request checker を登録することで、接続時に sender から送られた credentials を用いて Android app receiver と Web receiver どちらに接続するかを指定することができる
LaunchRequestChecker:
code:kotlin
class MyCastReceiverOptionsProvider : ReceiverOptionsProvider {
override fun getOptions(context: Context): CastReceiverOptions =
CastReceiverOptions.Builder(context)
// other options
// ...
.setLaunchRequestChecker { launchRequest: Cast.LaunchRequest ->
val credentials = launchRequest.credentials
Tasks.call {
// returns...
// - true: allowed to join, i.e. connect to Android app receiver
// - false: rejected, then connect to Web receiver instead
}
}.build()
}